/**
 * https://blog.csdn.net/weixin_40857858/article/details/108327446
 *
 * 1、ribbon的超时配置
 * ribbon:
 *   OkToRetryOnAllOperations: false #对所有操作请求都进行重试,默认false,包括连接超时(connectTimeout)和请求超时(readTimeOut)
 *   ReadTimeout: 3000   #负载均衡超时时间，默认值5000
 *   ConnectTimeout: 2000 #ribbon请求连接的超时时间，默认值2000
 *   MaxAutoRetries: 0     #对当前实例的重试次数，默认0,不包含首次调用
 *   MaxAutoRetriesNextServer: 0 #对切换实例的重试次数，默认1,不包含首次调用
 *   ribbon的配置类参考DefaultClientConfigImpl
 *
 *  2、hystrix的熔断配置
 *  hystrix:
 *   command:
 *     default:
 *       execution:
 *         timeout:
 *           enabled: true
 *         isolation:
 *           thread:
 *             timeoutInMilliseconds: 60000 #默认1000ms
 *
 *  3、feign的超时配置
 *  feign:
 *   hystrix:
 *     enabled: true #默认为false，如果为false,则使用ribbon的超时设置和重试机制，否则使用feign的相关设置
 *   client:
 *     config:
 *       default:
 *         #连接到目标的时间，此处会收到注册中心启动中的影响。设置为3秒钟，如果注册中心有明显的不在线，基本是毫秒级熔断拒绝
 *         connectTimeout: 3000
 *         #获取目标连接后执行的最长时间，设置为32秒，即服务最长时
 *         readTimeout: 32000
 *
 *  注意事项：如果同时配置ribbon和feign的超时时间，以feign的为准
 *
 * 结论：根据上面分析，Hystrix的熔断时间要大于Feign或Ribbon的connectTimeout+readTimeout，
 * 由于ribbon的重试次数为RetryCount = (maxAutoRetries + 1) * (maxAutoRetriesNextServer + 1)，因此必须保证
 * (maxAutoRetries + 1) * (maxAutoRetriesNextServer + 1)*（ConnectTimeout+ReadTimeout）< timeoutInMilliseconds，
 * 因为如果小于超时时间, 那就熔断了, 没有机会重试了。
 *
 */